﻿P12132[蓝桥杯 2025 省 B] 可分解的正整数

定义一种特殊的整数序列，这种序列由连续递增的整数组成，并满足以下条件：

序列长度至少为 3。
序列中的数字是连续递增的整数（即相邻元素之差为 1），可以包括正整数、负整数或 0。
例如，[1, 2, 3]、[4, 5, 6, 7] 和[−1, 0, 1] 是符合条件的序列，而[1, 2]（长度不足）和[1, 2, 4]（不连续）不符合要求。

现给定一组包含 N 个正整数的数据 A
1
​
, A
2
​
, …, A
N
​
。如果某个 A
i
​
能够表示为符合上述条件的连续整数序列中所有元素的和，则称 A
i
​
是可分解的。

请你统计这组数据中可分解的正整数的数量。

输入格式
输入的第一行包含一个正整数 N，表示数据的个数。

第二行包含 N 个正整数 A
1
​
, A
2
​
, …, A
N
​
，表示需要判断是否可分解的正整数序列。

输出格式
输出一个整数，表示给定数据中可分解的正整数的数量。

输入输出样例
输入 #1复制
3
3 6 15
输出 #1复制
3
说明 / 提示
样例说明
A
i
​
= 3 是可分解的，因为[0, 1, 2] 的和为 0 + 1 + 2 = 3。
A
i
​
= 6 是可分解的，因为[1, 2, 3] 的和为 1 + 2 + 3 = 6。
A
i
​
= 15 是可分解的，因为[4, 5, 6] 的和为 4 + 5 + 6 = 15。
所以可分解的正整数的数量为 3。

评测用例规模与约定
对于 30 % 的评测用例，1≤N≤100，1≤A
i
​
≤100。
对于 100 % 的评测用例，1≤N≤10
5
，1≤A
i
​
≤10
9
。




//不难发现除了1以外左右两边都是对称的因此可以抵消掉；即除1外所有数都行
#include<bits/stdc++.h>
using namespace std;
int ans = 0;
int main() {
    int n = 0;
    for (int i = 0; i < n; i++) {
        int a;
        cin >> a;
        if (a != 1) ans++;
    }
    cout << ans;
}





P12165[蓝桥杯 2025 省 C / Java A] 最短距离
在一条一维的直线上，存在着 n 台显示器和 n 个电源插座。老师给小蓝布置了个任务：负责将每台显示器通过电源线与一个插座相连接（每个插座最多只能给一台显示器供电）；同时，老师希望所消耗的电源线的长度尽可能的少，请你帮小蓝计算下电源线的最小消耗长度为多少？

为了便于计算，你只需要考虑直线距离即可。



输入格式
输入的第一行包含一个正整数 n。

接下来 n 行，每行包含一个整数 x
i
​
，依次表示每台显示器的坐标。

接下来 n 行，每行包含一个整数 y
i
​
，依次表示每个插座的坐标。

输出格式
输出一行包含一个整数表示答案。

输入输出样例
输入 #1复制
2
0
1
2
3
输出 #1复制
4



//思路：贪心：即找最近的x与y之差；通过举例无法的出反证-->排序后一一对应连接是最短的
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
vector<ll> v1, v2;
int main() {
    ll n;
    cin >> n;
    v1.resize(n);
    v2.resize(n);

    for (int i = 0; i < n; i++) cin >> v1[i];
    for (int i = 0; i < n; i++) cin >> v2[i];
    sort(v1.begin(), v1.end());
    sort(v2.begin(), v2.end());
    ll ans = 0;
    for (int i = 0; i < n; i++) {
        ans += abs(v1[i] - v2[i]);
    }

    cout << ans << endl;
}